package com.course02.order_backend.mapper.LXY;

import com.course02.order_backend.entity.LXY.Permission;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author wozhe
 * 操作权限表
 */
@Mapper
public interface PermissionMapper {

    /**
     * 根据查询权限
     * 批量查询
     * @Param permissionIds权限ID列表
     * @return 权限信息列表
     */
    List<Permission> batchGetPermissionsByPermissionIds( List<Long> permissionIds);
//    Permission selectById(@Param("id") Long id);

    /**
     * 根据权限码查询权限（唯一索引）
     */
    Permission selectByCode(@Param("code") String code);

    /**
     * 查询所有权限（可用于构建权限树）
     */
    List<Permission> selectAll();

    /**
     * 模糊查询：根据 label 或 code 查询
     */
    List<Permission> selectByKeyword(@Param("keyword") String keyword);

    /**
     * 根据类型查询（如只查菜单）
     */
    List<Permission> selectByType(@Param("type") Byte type);

    /**
     * 查询所有顶级权限（parent_id = 0 或 null）
     */
    List<Permission> selectRootPermissions();

    /**
     * 根据父权限ID查询子权限
     */
    List<Permission> selectByParentId(@Param("parentId") Long parentId);

    /**
     * 插入新权限
     */
    int insert(Permission permission);

    /**
     * 更新权限
     */
    int update(Permission permission);

    /**
     * 根据ID删除权限
     */
    int deleteById(@Param("id") Long id);

    /**
     * 批量删除权限（可用于级联删除子权限）
     */
    int deleteByIds(@Param("ids") List<Long> ids);
}
